package hujianlin.top.aiwebsocket.server;

import com.alibaba.fastjson2.JSON;
import hujianlin.top.aiwebsocket.entity.MsgInfo;
import jakarta.websocket.OnClose;
import jakarta.websocket.OnMessage;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;

@Slf4j
@Component
@ServerEndpoint("/websocket")
public class MyWebSocketEndpoint {

    // 当客户端连接时，触发此方法
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("Client connected: " + session.getId());
        try {
            // 发送欢迎消息给客户端
            MsgInfo msgInfo=new MsgInfo();
            msgInfo.setMsgClass("text");
            msgInfo.setToUserName("花兮");
            msgInfo.setSendContent("测试给你发消息哦");
            MsgInfo msgInfo2=new MsgInfo();
            msgInfo2.setMsgClass("image");
            msgInfo2.setToUserName("花兮");
            msgInfo2.setSendContent("group1/M00/00/65/CvSJaGhpg8uAXHNOAAEhgzuk7yA927.png");
            // 回复客户端
            session.getBasicRemote().sendText(JSON.toJSONString(msgInfo));
            session.getBasicRemote().sendText(JSON.toJSONString(msgInfo2));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 当接收到客户端发送的消息时，触发此方法
    @OnMessage
    public void onMessage(Session session, String message) {
        System.out.println("Received message: " + message);
//        try {
//            MsgInfo msgInfo=new MsgInfo();
//            msgInfo.setMsgClass("text");
//            msgInfo.setToUserName("花兮");
//            msgInfo.setSendContent("测试给你发消息哦");
//            MsgInfo msgInfo2=new MsgInfo();
//            msgInfo2.setMsgClass("image");
//            msgInfo2.setToUserName("花兮");
//            msgInfo2.setSendContent("group1/M00/00/65/CvSJaGhpg8uAXHNOAAEhgzuk7yA927.png");
//            // 回复客户端
//            session.getBasicRemote().sendText(JSON.toJSONString(msgInfo));
//            session.getBasicRemote().sendText(JSON.toJSONString(msgInfo2));
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
    }

    // 当客户端断开连接时，触发此方法
    @OnClose
    public void onClose(Session session) {
        System.out.println("Client disconnected: " + session.getId());
    }
}
